import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;

/**
 * @Description
 *    给定你一个数组，这个数组里面有很多的0
 *    将这个数组分成两个数组，一个数组放的都是0，另一个数组放的都是非0数字
 * @Author hhy
 * @Date 2020/9/16 15:26
 */
public class Demo03 {
    public static void main(String[] args) {
        int[] nums = {1,2,3,0,4,5,0,12,0,0,8,0,10};
        Demo03 d = new Demo03();
        d.solution2(nums);
    }


    //第一种解法
    public void solution(int[] nums){
        Arrays.sort(nums);
        int len =0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]!=0){
                len = i;
                break;
            }
        }
        int[] a = new int[nums.length-len];
        int j = 0;
        for (int i = len; i < nums.length; i++) {
            a[j++] = nums[i];
        }
        int[] b = new int[len];  //b数组初始化后就全都是0了

        System.out.println("a数组的值为："+Arrays.toString(a));
        System.out.println("b数组的值为："+Arrays.toString(b));
    }

    //第二种解法
    public void solution2(int[] nums){
        int len = 0;
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]!=0){
                list.add(nums[i]);
            }else len++;
        }
        int[] array = new int[len];
        System.out.println(list);
        System.out.println(Arrays.toString(array));
    }
}
